package com.czk.rdd.operator.action

import org.apache.spark.{SparkConf, SparkContext}

/**
 * @Author:ChenZhangKun
 * @Date: 2021/12/10 15:01
 */
object Foreach {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    val sc = new SparkContext(sparkConf)
    val rdd = sc.makeRDD(List(1, 2, 3, 4))
    // driver中打印
    rdd.collect().foreach(println)
    //
    // 算子：executor中进行打印->无序的，不能控制
    // RDD的方法和Scala集合对象的方法不一样
    // 集合对象的方法都是在同一节点的内存中完成的
    // rdd的方法可以将计算逻辑发送到Executor端（分布式节点）执行
    // 为了区分不同的处理效果，所以将RDD的方法称之为算子2
    // RDD的方法外部的操作都是在Driver端执行的，而方法内部的逻辑代码是在Executor端执行的
    rdd.foreach(println)
  }
}
